package OOP_PM;

public class Java01 {
    public static void main(String[] args) {
        //多态：在继承，实现的情况下的一种现象，表现为：对象对台，行为多态
        People p1 = new Student();
        p1.run1();
        People p2 = new Teacher();
        p2.run1();
        //多态的好处：在多态形势下，右边的代码是解耦合的，更利于扩展和维护
        //p2.study();
        //对象类型强制转化：原本是什么类型，才能还原成什么类型
        Student s = (Student) p2;
        ((Student) p2).study();

    }
    public static void go(People p){
        //多态形式下不能直接调用子类特有的方法，但是转型后是可以调用的
        if (p instanceof Student){
            //如果接收的是子类对象，则直接将父类强制转化成子类类型
            Student s = (Student) p;
            s.study();
        }
        System.out.println("开始--------------");
        p.run1();
        System.out.println("结束--------------");
    }
}
